/**
 * 项目入口
 * @type {e | (() => Express)}
 */
const express = require('express'); //引入express模块
const expressJwt = require('express-jwt');//引入Token模块中间间
const config = require('./config');//引入配置项

const app = express(); //创建http服务器
app.use(require('cors')());//引入并使用跨域模块
app.use(express.json());// 使用json格式传递数据

app.use('/admin', express.static(__dirname + '/public/admin'));//处理静态文件目录，管理后台页面目录
app.use('/download',express.static(__dirname+'/public/download'));//处理静态文件目录，提供资源下载的目录
app.use('/uploads', express.static(__dirname + '/uploads'));//处理文件上传目录，图片目录

/**
 * 图片上传
 * 保存到指定路径，并将URL返回
 * 公用的接口，故放在外面
 * @type {multer}
 */
const multer = require('multer');
const upload = multer({dest: __dirname + '/uploads'});
app.use('/movie/api/upload', upload.single('file'), async (req, res) => {
    const file = req.file;
    file.url = `/uploads/${file.filename}`;
    res.send(file)
});


/**
 * token验证的中间件配置
 */
app.use(expressJwt({
    credentialsRequired: false,//允许没有token的接口请求
    secret: config.SECRET,
    algorithms: ['HS256']
}).unless({
    //此处可以添加无需token验证的路由
    // path:['','']
}));

require('./plugins/db')(app);//连接数据库，并传入express实例
require('./routes/admin')(app);//引入路由模块（管理后台API路由）
require('./routes/client')(app);//引入路由模块（客户端API路由）

app.listen(3030, () => {
    console.log('监听3030端口成功') //端口监听成功，即服务器开启成功
});